package com.lavida.project.monitor.job.task;

import java.util.Date;
import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.lavida.common.utils.DateUtils;
import com.lavida.common.utils.StringUtils;
import com.lavida.project.system.contractmana.domain.Contractmana;
import com.lavida.project.system.contractmana.mapper.ContractmanaMapper;
import com.lavida.project.system.emp.domain.Emp;
import com.lavida.project.system.emp.mapper.EmpMapper;
import com.lavida.project.system.papers.domain.Papers;
import com.lavida.project.system.papers.mapper.PapersMapper;
import com.lavida.project.system.remind.domain.Remind;
import com.lavida.project.system.remind.mapper.RemindMapper;
import com.lavida.project.system.user.domain.User;
import com.lavida.project.system.user.mapper.UserMapper;

/**
 * 定时任务调度测试
 * 
 */
@Component("ryTask")
public class RyTask
{
	@Autowired
	private EmpMapper empMapper;
	
	@Autowired
	private RemindMapper remindMapper;
	
	@Autowired
	private UserMapper userMapper;
	
	@Autowired
	private PapersMapper papersMapper;
	
	@Autowired
	private ContractmanaMapper contractMapper;
	
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法： 字符串类型{}，布尔类型{}，长整型{}，浮点型{}，整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法：" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }
    /**
     * 生日提醒（前10天 至 当天）
     */
    public void birthRemind() throws NullPointerException{
    	List<Emp> birthEmpList = empMapper.getCurrentEmpBirth();
    	System.out.println("birthEmpList>>>>>>>>>>"+birthEmpList.toString());
    	for(Emp emp:birthEmpList) {
    		System.out.println("emp+>>>>>>>"+emp.toString());
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("员工生日提醒");
    		int j = DateUtils.getBirthDayes(emp.getBirthday());
    		System.out.println(">>>>>>>>>>>>>>>>>"+j);
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工生日还有"+j+"天就到了，为TA送上员工关怀吧！");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			int i = remindMapper.add(remind);
        			if (i==1) {
						System.out.println("添加成功");
					}else {
						System.out.println("添加失败");
					}
					
    			}
    		}
    	}
    }
    /**
     * 转正提醒（前10天 至 当天）
     */
    public void becomeRegularRemind() throws NullPointerException{
    	List<Emp> becRegEmptList = empMapper.getBecomeRegularEmp();
    	System.out.println("emplist>>>>>>>>>>>"+becRegEmptList);
    	for(Emp emp:becRegEmptList) {
    		System.out.println("emp>>>>>>>>>>>"+emp.toString());
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("员工转正提醒");
    		int j = DateUtils.getBirthDayes(emp.getEmpconfirmation());
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工还有"+j+"天转正，请及时处理！");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    /**
     * 身份证有效期提醒（前30天 至 当天）
     */
    public void validityCardRemind() throws NullPointerException{
    	List<Emp> validityCardtList = empMapper.getValidityCardEmp();
    	for(Emp emp:validityCardtList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("身份证有效提醒");
    		int j = DateUtils.getBirthDayes(emp.getCarddate());
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工还有"+emp.getBeforeDays()+"天身份证到期，请及时提醒。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    /**
     * 证件到期提醒（前90天 至 当天）
     */
    public void papersExpirationRemind() {
    	List<Papers> papersList = papersMapper.selectExpirationPapers();
    	for(Papers papers:papersList) {
    		System.out.println(papers.toString());
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("证件到期提醒");
    		remind.setRemindContent("证件名称为"+papers.getName()+",证件号为"+papers.getCerId()+"的证件还有"+papers.getDays()+"天到期，请及时提醒。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 证件变更超过30天提醒（证件变更日期距今天超过30天）
     */
    public void papersChangeRemind() {
    	List<Papers> papersList = papersMapper.selectChangePapers();
    	for(Papers papers:papersList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("证件变更超过30天提醒");
    		remind.setRemindContent("证件名称为"+papers.getName()+",证件号为"+papers.getCerId()+"的证件变更已经超过30天，请跟踪！");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 保单到期提醒（前60天 至 当天）
     */
    public void policyExpirationRemind() {
    	List<Contractmana> policyExpirationContractList = contractMapper.selectPolicyExpirationContract();
    	for(Contractmana contract:policyExpirationContractList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("保单到期提醒");
    		remind.setRemindContent(contract.getInsurance_name()+"保单还有"+contract.getDays()+"天到期，请及时续签。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 合同签订补全提醒（签约日期当天开始每天提醒）
     */
    public void contractSignCompleteRemind() {
    	List<Contractmana> signCompleteContractList = contractMapper.selectSignCompleteContract();
    	for(Contractmana contract:signCompleteContractList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("合同签订补全提醒");
    		remind.setRemindContent(contract.getInsurance_name()+"合同已签约，但起始日或到期日为空，请跟踪！");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 合同到期提醒（前60天 至 当天）
     */
    public void contractExpirationRemind() {
    	List<Contractmana> contractExpirationContractList = contractMapper.selectContractExpirationContract();
    	for(Contractmana contract:contractExpirationContractList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("合同到期提醒");
    		remind.setRemindContent(contract.getInsurance_name()+"合同还有"+contract.getDays()+"天到期，请及时处理。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 入职文件补全提醒（入职日期当天 至 资料全部填写完毕）
     */
    public void entryDocumentsCompleteRemind() {
    	
    }
    
    /**
     * 离职文件补全提醒（）
     */
    public void resignDocumentsCompleteRemind() {
    	
    }
    
    
    /**
     * 员工年假提醒
     */
    public void annualLeaveRemind() {
    	//1年
    	List<Emp> oneYearEmptList = empMapper.getWorkOneYearEmp();
    	for(Emp emp:oneYearEmptList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("员工年假提醒");
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工入职已满1年，请修改"+emp.getName()+"在钉钉上的本年年假时间5天。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    	//5年
    	List<Emp> tenYearEmptList = empMapper.getWorkFiveYearEmp();
    	for(Emp emp:tenYearEmptList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("员工年假提醒");
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工入职已满5年，请修改"+emp.getName()+"在钉钉上的本年年假时间10天。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    	//10年
    	List<Emp> twentyYearEmptList = empMapper.getWorkTenYearEmp();
    	for(Emp emp:twentyYearEmptList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("员工年假提醒");
    		remind.setRemindContent("工号为'"+emp.getJob_id()+"',姓名为'"+emp.getName()+"'的员工入职已满10年，请修改"+emp.getName()+"在钉钉上的本年年假时间15天。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
    /**
     * 合同上传提醒
     */
    public void contractUploadRemind() {
    	List<Contractmana> noUploadContractList = contractMapper.selectNoUpload();
    	for(Contractmana contract:noUploadContractList) {
    		Remind remind = new Remind();
    		remind.setRemind("admin");
    		remind.setRemindDept("1");
    		remind.setRemindDate(DateUtils.getTime());
    		remind.setFormUrl("");
    		remind.setFormName("合同上传提醒");
    		remind.setRemindContent(contract.getInsurance_name()+"合同已经签署，请尽快上传附件。");
    		remind.setIsView("0");
    		// 接收人为所有用户(管理员不用)
    		List<User> userList = userMapper.selectUserList(new User());
    		for(User user:userList) {
    			if(!"admin".equals(user.getLoginName())) {
    				remind.setReceiver(user.getLoginName());
        			remindMapper.add(remind);
    			}
    		}
    	}
    }
    
}
